package com.dragon.backstage.domain.vo.userOperateLog;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 用户操作日志模块-用户操作日志详情VO
 *
 * @author dragon
 * @version 1.0
 * @date 2024/10/8 18:25
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = "用户操作日志模块-用户操作日志详情VO")
public class UserOperateLogDetailVo {

    /**
     * 用户操作日志ID
     */
    @Schema(title = "用户操作日志ID")
    private Long operateId;

    /**
     * 追踪ID
     */
    @Schema(title = "追踪ID")
    private String traceId;

    /**
     * 操作账号
     */
    @Schema(title = "操作账号")
    private String operateAccount;

    /**
     * 模块标题
     */
    @Schema(title = "模块标题")
    private String title;

    /**
     * 业务类型
     * 0:其它;
     * 1:新增;
     * 2:修改;
     * 3:删除;
     * 4:上传;
     * 5:下载;
     * 6:导出;
     * 7:导入;
     * 8:清空数据;
     * 101:更改菜单显示状态;
     * 102:更改菜单状态;
     * 201:更改角色状态;
     * 202:批量添加授权用户;
     * 203:批量删除授权用户;
     * 301:更改用户状态;
     * 302:批量添加授权角色
     */
    @Schema(title = "业务类型(0:其它;1:新增;2:修改;3:删除;4:上传;5:下载;6:导出;7:导入;8:清空数据;101:更改菜单显示状态;102:更改菜单状态;201:更改角色状态;202:批量添加授权用户;203:批量删除授权用户;301:更改用户状态;302:批量添加授权角色)")
    private Integer businessType;

    /**
     * 方法名称
     */
    @Schema(title = "方法名称")
    private String method;

    /**
     * 请求方式
     */
    @Schema(title = "请求方式")
    private String requestMethod;

    /**
     * 请求URL
     */
    @Schema(title = "请求URL")
    private String requestUrl;

    /**
     * 主机地址
     */
    @Schema(title = "主机地址")
    private String requestIp;

    /**
     * 操作地点
     */
    @Schema(title = "操作地点")
    private String operateLocation;

    /**
     * 请求参数
     */
    @Schema(title = "请求参数")
    private String requestParam;

    /**
     * 返回参数
     */
    @Schema(title = "返回参数")
    private String jsonResult;

    /**
     * 操作状态(1正常 0异常)
     */
    @Schema(title = "操作状态(1正常 0异常)")
    private Byte status;

    /**
     * 错误消息
     */
    @Schema(title = "错误消息")
    private String errorMsg;

    /**
     * 操作时间
     */
    @Schema(title = "操作时间")
    private LocalDateTime operateTime;

    /**
     * 消耗时间(毫秒)
     */
    @Schema(title = "消耗时间(毫秒)")
    private Long costTime;

}
